package main

import (
	"bufio"
	"fmt"
	"io/ioutil"
	"net/http"

	"golang.org/x/net/html/charset"
	"golang.org/x/text/transform"
)

func responseBody(r *http.Response) {
	content, _ := ioutil.ReadAll(r.Body)
	fmt.Printf("%s", content)
}

func status(r *http.Response) {
	fmt.Println(r.StatusCode)
	fmt.Println(r.Status)
}

func header(r *http.Response) {
	fmt.Println(r.Header.Get("content-type"))
}

func encoding(r *http.Response) {
	// content-type 有可能提供编码信息
	// html head meta 获取
	// 可以通过网页的头部猜测编码的信息
	bufReader := bufio.NewReader(r.Body)
	bytes, _ := bufReader.Peek(1024) // 不会移动 reader 的读取位置
	e, _, _ := charset.DetermineEncoding(bytes, r.Header.Get("content-type"))
	fmt.Println(e)
	// 转码
	bodyReader := transform.NewReader(bufReader, e.NewDecoder())
	content, _ := ioutil.ReadAll(bodyReader)
	fmt.Printf("%s", content)
}

func main() {
	r, err := http.Get("https://wwww.baidu.com")
	if err != nil {
		panic(err)
	}
	defer r.Body.Close()
	// responseBody(r)
	// status(r)
	// header(r)
	encoding(r)
}
